Component({
  mixins: [],
  data: {
    items:[],
  }, 
  props: {
    items: [],
    //注意事件名务必使用驼峰名法，当时采用子组件给父组件传值时一直不生效，结果是因为事件名写成了 onsubTab（没采用驼峰命名）
    onSubTab:(data)=>console.log(data), // 事件传递
    getCheckedItems:(data)=>console.log(data)
  },
  didMount() {
    this.setData({
      items:this.props.items,
    });
  },
  didUpdate(prevProps) {
    // 仅在 props.items 实际发生变化时才更新 data.items
    if (JSON.stringify(prevProps.items) !== JSON.stringify(this.props.items)) {
      this.setData({
        items: this.props.items,
      });
    }
  },
  didUnmount() {
    
  },
  methods: {
    onChange(checked, e) {
      // console.log(checked,e)
      const index = e.currentTarget.dataset.index; // 获取 checkbox 的 value 值
      const updatedItems = this.updateCheckedStatus(this.data.items, index, checked);
      this.setData({
        items: updatedItems,
      });
      // console.log(this.data.items)
      // 调用 getCheckedItems 获取所有 checked 为 true 的对象
      const checkedItems = this.getCheckedItems(updatedItems);
      // console.log('Checked items:', checkedItems);
      this.props.onSubTab(checkedItems)
  },
  updateCheckedStatus(items, value, checked) {
    return items.map(item => {
      // 深拷贝当前item，避免直接修改原有的items数据
      let newItem = { ...item };
      // 如果当前项有子项，递归更新子项
      if (newItem.children && newItem.children.length > 0) {
        newItem.children = this.updateCheckedStatus(newItem.children, value, checked);
      }
      // 检查当前项的value是否与目标value一致
      if (newItem.value === value) {
        newItem.checked = checked;
      }
      return newItem;
    });
  },
  updateChildrenCheckedStatus(children, checked) {
    return children.map(child => {
      let newChild = { ...child };
      newChild.checked = checked;
  
      // 如果子项还有子项，递归更新其checked状态
      if (newChild.children && newChild.children.length > 0) {
        newChild.children = this.updateChildrenCheckedStatus(newChild.children, checked);
      }
  
      return newChild;
    });
  },
  getCheckedItems(items) {
    let checkedItems = [];
  
    // 递归遍历 items 数组
    items.forEach(item => {
      // 如果当前项 checked 为 true，将其加入结果数组
      if (item.checked) {
        checkedItems.push(item);
      }
  
      // 如果当前项有子项，递归检查子项
      if (item.children && item.children.length > 0) {
        checkedItems = checkedItems.concat(this.getCheckedItems(item.children));
      }
    });
  
    return checkedItems;
  },    
  onTap() {
      // my.alert({
      //     content: this.data.checkboxList,
      // });
    console.log("???????????");
  },
  },
});